package com.sc.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sc.context.BaseContext;
import com.sc.domain.Action;
import com.sc.dto.ActionDTO;
import com.sc.dto.ActionPageDTO;
import com.sc.mapper.ActionMapper;
import com.sc.result.PageResult;
import com.sc.service.ActionService;
import org.springframework.stereotype.Service;
import java.time.LocalDate;


@Service

public class ActionServiceImpl extends ServiceImpl<ActionMapper, Action> implements ActionService {
    /**
     * 添加活动
     *
     * @param actionDTO 前端出入表单数据
     */
    @Override
    public void saveAction(Action action) {
        //日期
        action.setAnDate(LocalDate.now());
        //发布人
        Long userId = BaseContext.getCurrentId();
        // 根据用户id查询用户姓名 TODO
        action.setPublisher("当前登录用户");

        //调用save方法保存
        save(action);
    }

    /**
     * 修改活动
     *
     * @param actionDTO 前端传入参数
     */
    @Override
    public void modifyAction(Action action) {
        //日期
        action.setAnDate(LocalDate.now());
        //发布人
        Long userId = BaseContext.getCurrentId();
        // 根据用户id查询用户姓名 TODO
        action.setPublisher("当前登录用户");

        //更新对象
        updateById(action);
    }

    /**
     * 活动分页查询
     *
     * @param actionPageDTO 传入的分页参数
     * @return 查询到的记录
     */
    @Override
    public PageResult pageQuery(ActionPageDTO actionPageDTO) {
        //分页条件
        Page<Action> pageInfo = new Page<>(actionPageDTO.getPage(),actionPageDTO.getPageSize());
        //动态条件
        LambdaQueryWrapper<Action> queryWrapper = new LambdaQueryWrapper<>();
        if (actionPageDTO.getTitle()!=null) {
            queryWrapper.like(Action::getTitle, actionPageDTO.getTitle());
        }
        //分页查询
        Page<Action> page = page(pageInfo, queryWrapper);

        return new PageResult(page.getTotal(),page.getRecords());
    }


}
